package com.linyaonan.leetcode.easy._57;

import javax.swing.text.html.HTML;
import java.util.ArrayList;

/**
 * 输入一个正整数 target ，输出所有和为 target 的连续正整数序列（至少含有两个数）。
 *
 * 序列内的数字由小到大排列，不同序列按照首个数字从小到大排列。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：target = 9
 * 输出：[[2,3,4],[4,5]]
 * 示例 2：
 *
 * 输入：target = 15
 * 输出：[[1,2,3,4,5],[4,5,6],[7,8]]
 *  
 *
 * 限制：
 *
 * 1 <= target <= 10^5
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
class Solution {
    public int[][] findContinuousSequence(int target) {
        target *= 2;
        ArrayList<int[]> add = new ArrayList<>();
        for (int i = 2; i <= target; i++) {
            // 表示可以除尽
            if (target % i == 0) {
                int p = target / i;
                p++;
                p = p - i;
                if (p <= 1) {
                    break;
                }
                if (p % 2 == 0) {
                   int start = p / 2;
                    int[] ints = new int[i];
                    for (int j = 0; j < ints.length; j++) {
                        ints[j] = start++;
                    }
                    add.add(ints);
                }
            }
        }
        int[][] result = new int[add.size()][];
        for (int i = 0; i < result.length; i++) {
            result[i] = add.get(result.length - 1 - i);
        }
        return result;
    }
}